我知道这已经得到了回答,但似乎直接执行脚本"python filename.py"不起作用.我在SuSE Linux上有Python 2.6.2.
码:
#!/usr/bin/python
# -*- coding: utf-8 -*-
from multiprocessing import Pool
p = Pool(1)
def f(x):
return x*x
p.map(f, [1, 2, 3])
Run Code Online (Sandbox Code Playgroud)
命令行:
> python example.py
Process PoolWorker-1:
Traceback (most recent call last):
File "/usr/lib/python2.6/multiprocessing/process.py", line 231, in _bootstrap
self.run()
File "/usr/lib/python2.6/multiprocessing/process.py", line 88, in run
self._target(*self._args, **self._kwargs)
File "/usr/lib/python2.6/multiprocessing/pool.py", line 57, in worker
task = get()
File "/usr/lib/python2.6/multiprocessing/queues.py", line 339, in get
return recv()
AttributeError: 'module' object has no attribute 'f'
Run Code Online (Sandbox Code Playgroud) 我是多重处理的新手,如果有人可以在这里指导/帮助我,我将非常感激。我有以下 for 循环,它从两个函数获取一些数据。代码看起来像这样
for a in accounts:
dl_users[a['Email']] = get_dl_users(a['Email'], adConn)
group_users[a['Email']] = get_group_users(a['Id'], adConn)
print(f"Users part of DL - {dl_users}")
print(f"Users part of groups - {group_users}")
adConn.unbind()
Run Code Online (Sandbox Code Playgroud)
这工作正常并获得所有结果,但最近我注意到它需要很多时间来获取用户列表,即 dl_users 和 group_users。大约需要 14-15 分钟才能完成。我正在寻找可以加速该函数的方法,并希望将此 for 循环转换为多处理。get_group_users并get_dl_users调用 LDAP,所以我不能 100% 确定是否应该将其转换为多处理或多线程。任何建议都会有很大帮助
python python-multithreading python-3.x python-multiprocessing