Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-core/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 用map调用类方法_Python_Multithreading - Fatal编程技术网

Python 用map调用类方法

Python 用map调用类方法,python,multithreading,Python,Multithreading,在一个名为“self.plane”的列表中,我有几个名为Particle的类的实例,我想同时更新这些实例 from multiprocessing import Process, Pool from timeit import default_timer as current_time class Particle: def __init__(self, X_position, Y_position, X_velocity=0 ,Y_velocity=0, mass=600):

在一个名为“self.plane”的列表中,我有几个名为Particle的类的实例,我想同时更新这些实例

from multiprocessing import Process, Pool
from timeit import default_timer as current_time

class Particle:
    def __init__(self, X_position, Y_position, X_velocity=0 ,Y_velocity=0, mass=600):
        self.mass = mass
        self.velocity = {'x':X_velocity,'y':Y_velocity}
        self.position = {'x':X_position,'y':Y_position}
        self.time_of_last_update = {'x':current_time(),'y':current_time()}

    def update(self):
        for axis in self.position:
            # Calculate time since update was last run
            elapsed_time = current_time() - self.time_of_last_update[axis]
            # Calculate acceleration
            # acceleration = force[axis] / self.mass
            acceleration = -1
            # Calculate velocity
            self.velocity[axis] = self.velocity[axis] + ( acceleration * elapsed_time )
            # Change position if needed
            if (elapsed_time >= 1 / abs( self.velocity[axis] )):
                # Calculate new postion
                self.position[axis] = self.position[axis] + int( elapsed_time * self.velocity[axis] )
                print(self.position)
                # Reset the timer
                self.time_of_last_update[axis] = current_time()
map函数似乎是实现这一点的最简单方法

我想我可以让
Particle.update()
在迭代
self.plane
时接收它的
self
参数

workers = Pool(processes=4)
workers.map(Particle.update(), self.plane)

但是,当我运行此操作时,我得到
TypeError:update()缺少1个必需的位置参数:“self”

,这是因为需要使用您的值创建对象粒子=粒子(X_position=X_pos,Y_position=Y_vel,X_velocity=X_vel,Y_velocity=0,mass=600)的实例,然后,一旦有了实例粒子,您可以调用particle.update(),因为您需要使用您的值创建对象particle=particle(X_position=X_pos,Y_position=Y_vel,X_velocity=X_vel,Y_velocity=0,mass=600)的实例,然后,一旦有了实例particle,就可以调用particle.update()