小编Gui*_*ari的帖子

线程可以在Python中创建子线程吗?

我熟悉在python中创建线程的语法.

from threading import Thread
from queue import Queue

task_queue = Queue(maxsize=0)    

num_threads=10
for i in range(num_threads):
    thread = Thread(target=work, args=(task_queue,))
    thread.start()

task_queue.join()
Run Code Online (Sandbox Code Playgroud)

我的问题是天气可以在其他线程中打开新线程,如下所示:

def work(task_queue):
    task = task_queue.get()

    subtasks = task.get_sub_tasks()

    for subtask in subtasks:
        thread = Thread(target=sub_work, args(subtask,))
        thread.start()
Run Code Online (Sandbox Code Playgroud)

所以

  1. 这个结构好吗?或者这样做是不是很麻烦?

  2. 如果这没关系,子线程进程是否从属于生成它的线程,或者它们是否是父python进程的子进程?如果创建子线程的线程"死"并出现错误,那么子线程会发生什么?

我意识到python线程受解释器全局锁定,但我的应用程序涉及访问服务器,因此多线程是为了避免序列化连接需要太长时间.

python multithreading

10
推荐指数
1
解决办法
4555
查看次数

Numpy重塑到位

有没有办法在numpy数组上进行重构,但是就地.我的问题是我的阵列非常大,所以任何不必要的副本都不会给内存带来压力.

我目前的做法是这样的:

train_x = train_x.reshape(n,32*32*3)
Run Code Online (Sandbox Code Playgroud)

这并没有完全解决问题,因为它创建了一个新数组,然后将标签train_x赋予新数组.

在正常情况下这可以,因为垃圾收集器很快就会收集原始数组.

问题是我有这样的事情:

train_x, train_y = train_set
train_x = train_x.reshape(n,32*32*3)
Run Code Online (Sandbox Code Playgroud)

所以在这种情况下,即使train_x不再指向原始数组,仍然有一个指向原始数组的指针train_set.

我想要一种方法将前一个数组的所有指针更改为这个新数组.有办法吗?

或许还有其他一些方法来处理这个/

numpy in-place memory-consumption reshape

6
推荐指数
1
解决办法
5093
查看次数

张量流中GradientDescentOptimizer和AdamOptimizer之间的区别?

使用GradientDescentOptimizer而不是Adam Optimizer时,模型似乎不会收敛.另一方面,AdamOptimizer似乎工作正常.来自tensorflow的GradientDescentOptimizer出了什么问题?

import matplotlib.pyplot as plt
import tensorflow as tf
import numpy as np

def randomSample(size=100):
    """
    y = 2 * x -3
    """
    x = np.random.randint(500, size=size)
    y = x * 2  - 3 - np.random.randint(-20, 20, size=size)    

    return x, y

def plotAll(_x, _y, w, b):
    fig = plt.figure()
    ax = fig.add_subplot(111)
    ax.scatter(_x, _y)

    x = np.random.randint(500, size=20)
    y = w * x + b
    ax.plot(x, y,'r')
    plt.show()

def lr(_x, _y):

    w = tf.Variable(2, dtype=tf.float32)
    b = tf.Variable(3, dtype=tf.float32) …
Run Code Online (Sandbox Code Playgroud)

python regression machine-learning gradient-descent tensorflow

4
推荐指数
1
解决办法
1898
查看次数