Discuss / Python / windows不支持callable元素是lambda表达式

windows不支持callable元素是lambda表达式

Topic source

庞小震77

#1 Created at ... [Delete] [Delete and Lock User]

-- coding: utf-8 --

from multiprocessing.managers import BaseManager import time,random,queue from multiprocessing import freeze_support

task_queue=queue.Queue() result_queue=queue.Queue() class QUEUE(BaseManager): pass def return_task_queue(): global task_queue return task_queue def return_result_queue(): global result_queue return result_queue def test(): QUEUE.register('get_task_queue', callable=return_task_queue) QUEUE.register('get_result_queue', callable=return_result_queue) manager=QUEUE(address=('127.0.0.1',1008), authkey=b'abc') manager.start() task=manager.get_task_queue() result=manager.get_result_queue()

for i in range(10):
    n=random.randint(1,100)
    print('put task %d'%n)
    task.put(n)
print('try get result')
for i in range(10):
    r=result.get(timeout=10)
    print('result:%s'%r)
manager.shutdown()
print('master exit')

if name == 'main': freeze_support() test()

import sys QUEUE.register('get_task_queue') QUEUE.register('get_result_queue') server='127.0.0.1' print('connect to server:%s'%server) m=QUEUE(address=(server,1008),authkey=b'abc') m.connect() task1=m.get_task_queue() result1=m.get_result_queue() for i in range(10): n=task1.get(timeout=1) print('run task %d%d'%(n,n)) r='%d%d=%d'%(n,n,n*n) time.sleep(1) result1.put(r) print('worker exit')

庞小震77

#2 Created at ... [Delete] [Delete and Lock User]

后半段在同一个ide上运行弹出接口拒绝连接错误,没有在两台机器上实验。但是前段部分的代码运行无误

你可以在IDE和终端分别运行两个文件,总是不能在一个shell显示,还注意运行间隔不要超过10s。


  • 1

Reply