返回顶部
首页 > 资讯 > 后端开发 > Python >Python: Windows下用 mu
  • 729
分享到

Python: Windows下用 mu

PythonWindowsmu 2023-01-31 05:01:14 729人浏览 八月长安

Python 官方文档:入门教程 => 点击学习

摘要

笔者某天在测试多进程时, 发现了一个问题测试代码: #coding: utf8 from multiprocessing import Process import os print('Global_print', os.getpid(

笔者某天在测试多进程时, 发现了一个问题
测试代码:

#coding: utf8
from multiprocessing import Process 
import os 
print('Global_print', os.getpid())
def run_proc(name):

   print('Run child process %s (%s)…' % (name, os.getpid()))
if __name__=='__main__': 
   p = Process(target=run_proc, args=('test',)) 
   print(os.getpid()) 
   p.start()

上述代码不复杂, 肉眼就能猜出八九分: 父进程来执行了首尾的两个 print, 而子进程则只执行 run_proc 。

下面就这针对这一个猜测来验证:

linux下:

'Global_print', 14382
14382
Run child process test (14383)…

很符合我们的预期, 因为两次 os.getpid() 得到了一样的结果, 而子进程的那句输出也从侧面验证了另外两句 print 是父进程执行的.

接下来看下 windows:

What ???...

在测试了 debian/Centos 等等 unix/linux 不同发行版和不同 python 版本, 表现均为一致, 也就是上面 Linux 的输出。

然而,在 Windows下也也是很顽固的和上面的输出不一致。众所周知, Windows 和 Linux 在实现多进程上面是有点区别的..

于是, 感觉应该是 Windows 自身的问题, 在咨询了大佬之后, 得知官网早已有对这块进行说明了:

传送门: https://docs.Python.org/2/library/multiprocessing.html?highlight=process#windows

资料说明如下:
Python: Windows下用 multiprocessing 的深坑

简单的意思应该是下面这样:
因为 Windows 缺乏 Linux 那种 fork, 所以它会有一些额外的限制:

  • 不管是绑定还是未绑定的方法, 都不要直接作为参数传给 Process 初始化的 target, 相反应该要用普通的函数代替
  • 子进程在访问全局变量时, 可能会与父进程的值不同。 ( 模块级别的常量没这问题 )
  • 开启新Python 解析器或者创建新 process 时, 确定主模块能够安全的导入。

而刚才的那个问题, 就是因为没有注意到第三点, 所以导致了意想不到的的副作用, 应该用下面的写法取代上面的不安全写法:

from multiprocessing import Process, freeze_support

def foo():
   print 'hello'

if __name__ == '__main__':
   freeze_support()
   p = Process(target=foo)
   p.start()

果然 Windows 无处不在都在挖坑....

作者:Lin_R
原文链接:Httpt.cnR1Q19ML
Python: Windows下用 multiprocessing 的深坑

--结束END--

本文标题: Python: Windows下用 mu

本文链接: https://lsjlt.com/news/188181.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • Python: Windows下用 mu
    笔者某天在测试多进程时, 发现了一个问题测试代码: #coding: utf8 from multiprocessing import Process import os print('Global_print', os.getpid(...
    99+
    2023-01-31
    Python Windows mu
  • 如何使用Mu编辑器Python
    本篇内容主要讲解“如何使用Mu编辑器Python”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“如何使用Mu编辑器Python”吧!开始使用 Python 的 turtle 模块在 Linux 或...
    99+
    2023-06-16
  • Windows下用Python实现Web
    今天想用python实现一个简单的WebService应用,从网上找了很多资料,却不能顺利配置工作环境,不过经过半天的努力,还是顺利解决各种Bug,记录一下。 工作环境:Win7(64bit) + Python2.7.5(32b...
    99+
    2023-01-31
    Windows Python Web
  • 【python】windows下好用的的
    PyScripter是一个使用Delphi开发的开源的Python集成开发环境(IDE),发布于MIT协议之下。[1]PyScripter支持Python2.4、2.5、2.6、2.7、3.0、3.1、3.2,而且可以根据需要切换。PySc...
    99+
    2023-01-31
    好用 python windows
  • windows下python proto
    首先从google上下载protobuf-2.5.0.zip和protoc-2.5.0-win32.zip,然后把protoc-2.5.0-win32.zip里的protoc.exe放到protobuf-2.5.0\src\下。 切换到p...
    99+
    2023-01-31
    windows python proto
  • 使用Python在Windows下调用W
    import os  import time   source='C:\\Linda\\Test\\Python\\source' target_dir='C:\\Linda\\Test\\Python\\backup\\'  target...
    99+
    2023-01-31
    Python Windows
  • python学习-windows下使用p
       有时候需要处理很多报表,将一个目录下的所有excel格式报表合并,手工操作费事费力如果能使用python,将多个.xlsx同时能够合并多个excel表的话,多么方便。1、windows上python配置windows上安装的是pyth...
    99+
    2023-01-31
    python windows
  • 在Windows下,python-Lev
    (1)首先下载python-Levenshtein 网址:https://pypi.python.org/pypi/python-Levenshtein/0.10.2 (2)在切换到第三方包所在目录下,执行pip setup.p...
    99+
    2023-01-31
    Windows python Lev
  • windows下使用python进行串口
            Windows版本下的python并没有内置串口通讯的pyserial的库,所以需要自己下载。参照了网上的教程,有许多用的pip的安装方式,但是试了几个都没有用,所以想到用GitHub下载库文件,步骤分为: 1.在Gith...
    99+
    2023-01-31
    串口 windows python
  • windows下如何用python控制打
    参考网址 首先下载python需要的库 pip install pypiwin32 简单例子 import tempfile import win32api import win32print filename = tempf...
    99+
    2023-01-31
    如何用 windows python
  • Windows 平台下如何使用 Python?
    在 Windows 平台下使用 Python 是非常方便的,下面将为大家介绍如何在 Windows 平台上安装 Python,并演示一些基本操作。 一、安装 Python 下载 Python 安装包 Python 官网提供了 Windo...
    99+
    2023-11-11
    windows npm git
  • Windows下安装Python SSH
    OpenSSH下载网址:http://sourceforge.net/projects/sshwindows/,下载安装即可。 Pycrypto模块下载地址:http://pypi.python.org/pypi/pycrypto...
    99+
    2023-01-31
    Windows Python SSH
  • windows下python 安装mys
    首先查找过一些资料,选定mysql-python 来用做python访问mysql的支持库。开始用pip安装,失败了。后来通过安装windows的安装包,解决。血的教训:切记大写“import MySQLdb”exe下载地址:http://...
    99+
    2023-01-31
    windows python mys
  • Python【0】:windows环境下
    首先·····Python是一门解释性语言,这是他的特点,这让Python似乎与“高效”无缘。然而你知道吗,著名的Instagram服务器就是是用Python+Django搭建的,而且月活用户超过7亿。要知道Python+Django是一...
    99+
    2023-01-31
    环境 Python windows
  • python: 监控windows 下进
    目的: 针对Windows下进程异常退出后,此程序自动启动被监控进程。如:监控Serv-U.exe 程序是使用python语言编写,可在Windows下双击MonitorWin32Process.exe直接运行。程序会...
    99+
    2023-01-31
    python windows
  • Windows下Python安装lxml
    推荐安装方式:命令行安装pip install lxml==3.4.4easy_install lxml==3.4.4会自动下载lxml-3.4.4-cp27-none-win32.whl安装cp27表示是python2.7不指定版本号的话...
    99+
    2023-01-31
    Windows Python lxml
  • Python在windows下安装
    1. 用浏览器打开 http://notepad-plus-plus.org/ 下载并安装 Notepad++ 文本编辑器。这个操作无需管理员权限。2. 把 Notepad++ 放到桌面或者快速启动栏,这样你就可以方便地访问到该程序了。这两...
    99+
    2023-01-31
    Python windows
  • Windows下,VIM调试python
    作者:半瓶墨水 链接:http://www.2maomao.com/blog/win32-vim-debug-python/ vim很好用,但是python的set_trace太难用了,参考这篇文章,自己搞了一下。 现在Ctrl+...
    99+
    2023-01-31
    Windows VIM python
  • windows下python绿色安装
    一、绿色安装 从官方下载msi安装包文件,第一次安装时,在提示安装路径的时候选D:\Python27,在提示是否为当前用户安装还是所有用户安装时,选只有当前用户使用。于是Python的所有资源就都在D:\Python27文件夹下了。只要保...
    99+
    2023-01-31
    windows python
  • Windows下Python自动补全
    安装pyreadline。C:\>pip install pyreadline将以下代码保存为tab.py文件,存放到C:\Python27\Lib目录下即可。import readline import rlcompleter im...
    99+
    2023-01-31
    Windows Python
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作