如何在Python中的线程中传递参数[重复]

问题描述 投票:0回答:2

作为我正在开发的交易应用程序的一部分,我需要向线程发送一个参数。我已经参考了以下链接,但这些链接都不起作用。

Python 线程字符串参数,
如何在 Python 中向线程函数传递参数,
python 线程 - 将参数传递给线程的最佳方式

我的代码

order_trigger_loop_initiator = threading.Thread(target=trigger(), args=[company_data['instrument_token']])
renko_loop_initiator.start()

我作为线程启动的功能的一部分

def RENKO_TRIMA(token):
    global ohlc_final_1min, RENKO_Final, final_position, order_quantity, RENKO, RENKO_temp, Direction, Orderid, Target_order, Target_order_id, renko_thread_running, day_profit_percent
    try:
        renko_thread_running = "YES"
        attained_profit()
        quantity()
        positions(token)

我已遵循上述网站中的建议,甚至尝试做类似的事情

renko_loop_initiator = threading.Thread(target=RENKO_TRIMA, args=company_data['instrument_token'])

renko_loop_initiator = threading.Thread(target=RENKO_TRIMA, args=[company_data['instrument_token']]))
renko_loop_initiator = threading.Thread(target=RENKO_TRIMA, args=(company_data['instrument_token']))
renko_loop_initiator = threading.Thread(target=RENKO_TRIMA, args=(company_data['instrument_token'],))

似乎没有任何作用。作为参数发送的值将是 1270529

当我尝试上述任何方法时,我收到以下错误消息。

Traceback (most recent call last):
  File "C:/Users/win10/PycharmProjects/Trading-Application/USD-INR.py", line 838, in on_ticks
    order_trigger_loop_initiator = threading.Thread(target=trigger(), args=[company_data['instrument_token']])
TypeError: trigger() missing 1 required positional argument: 'token'
python multithreading python-multithreading
2个回答
1
投票

在错误消息中,您正在调用

trigger
,而不是将其作为函数传递。

order_trigger_loop_initiator = threading.Thread(target=trigger(), ...
                                                   # uh oh ---^

尝试仅传递函数:

order_trigger_loop_initiator = threading.Thread(
    target=trigger, 
    args=[company_data['instrument_token']]
)

1
投票

您正在立即致电

trigger
(您尚未在问题中发布,因此需要进行猜测):

order_trigger_loop_initiator = threading.Thread(
  target=trigger(),
  args=[company_data['instrument_token']],
)

如果

trigger
是一个不接受参数并返回另一个函数的函数,那么这可能会起作用,但如果您打算在另一个线程中运行
trigger
函数,您需要删除这些括号:

order_trigger_loop_initiator = threading.Thread(
  target=trigger,
  args=[company_data['instrument_token']],
)
© www.soinside.com 2019 - 2024. All rights reserved.