我是
   
    pathos
   
   .  如果您在非windows系统上执行代码,它可以很好地工作——甚至可以从解释器执行。(同样,它也可以从文件中工作)。
  
  >>> from pathos.multiprocessing import ProcessingPool;
>>> import time
>>> import sys;
>>> import datetime
>>> class tester:
...     def __init__(self):
...         self.pool=ProcessingPool(2);
...     def func(self,msg):
...         print (str(datetime.datetime.now()));
...         for i in xrange(1):
...             print msg
...             sys.stdout.flush();
...         time.sleep(2)    
...     def worker(self):
...         """"""
...         pool=self.pool
...         for i in xrange(10):
...                msg = "hello %d" %(i)
...                pool.map(self.func,[i])
...         pool.close()
...         pool.join()
...         time.sleep(40)
... 
>>> datetime.datetime.now()
datetime.datetime(2015, 10, 21, 19, 24, 16, 131225)
>>> t = tester()
>>> t.worker()
2015-10-21 19:24:25.927781
0
2015-10-21 19:24:27.933611
1
2015-10-21 19:24:29.938630
2
2015-10-21 19:24:31.942376
3
2015-10-21 19:24:33.946052
4
2015-10-21 19:24:35.949965
5
2015-10-21 19:24:37.953877
6
2015-10-21 19:24:39.957770
7
2015-10-21 19:24:41.961704
8
2015-10-21 19:24:43.965193
9
>>>
  
   问题是
   
    multiprocessing
   
   从根本上讲,windows是不同的,因为windows没有
   
    fork
   
   因此,它不像具有
   
    叉
   
   .
   
    多处理
   
   有一个叉子腌菜机,在被子下面
   
    subprocess
   
   而非windows系统可以跨进程利用共享内存。
  
  
   
    dill
   
   有一个
   
    check
   
   和A
   
    copy
   
   方法,该方法执行
   
    loads(dumps(object))
   
   对一些
   
    object
   
   在哪里
   
    复制
   
   使用共享内存,而
   
    检查
   
   使用
   
    子过程
   
   (与中的Windows相同
   
    多处理
   
   )这里是
   
    检查
   
   Mac上的方法,显然这不是问题所在。
  
  >>> import dill
>>> dill.check(t.func)
<bound method tester.func of <__main__.tester instance at 0x1051c7998>>
  
   你需要在windows上做的另一件事是
   
    freeze_support
   
   开始的时候
   
    __main__
   
   (即第一行
   
    小精灵
   
   )这在非windows系统上是不必要的,但在windows上却是非常必要的。医生来了。
  
  >>> import pathos
>>> print pathos.multiprocessing.freeze_support.__doc__
    Check whether this is a fake forked process in a frozen executable.
    If so then run code specified by commandline and exit.
>>>