小编dal*_*ore的帖子

在solr中是否可以指定文档的顺序

不是通用排序字段,而是说我希望按顺序返回的文档ID列表.

示例:document_ids = [5,3,10,6]

我可以按顺序查询solr以获取文档5,3,10,6吗?

solr

8
推荐指数
1
解决办法
4001
查看次数

计数位掩码,枚举0

我在接受采访时遇到了以下问题,我相信我提供了一个有效的实施方案,但我想知道是否有更好的实施更快,或者只是我错过了一个技巧.

给定3个无符号30位整数,返回30位整数的数量,与任何原始数字相比,将相同的位置位设置为1.即我们枚举所有的0

让我举个例子,但为了清晰起见,我们使用4bit.

鉴于:

A = 1001
B = 0011
C = 0110
Run Code Online (Sandbox Code Playgroud)

它应该返回8,因为集合中有8个4位的整数.该集是:

0011
0110
0111
1001
1011
1101
1110
1111
Run Code Online (Sandbox Code Playgroud)

现在我如何解决这个问题就是取每个数字并枚举一组可能性,然后计算所有不同的值.我如何枚举该集合是从数字开始,添加一个,然后与它自己或它直到我到达掩码.数字本身在集合中,掩码(全部设置为1)也在集合中.例如,枚举1001的集合:

1001 = the start
1011 = (1001 + 1) | 1001
1101 = (1011 + 1) | 1001
1111 = (1101 + 1) | 1001 (this is the last value as we have reached our mask)
Run Code Online (Sandbox Code Playgroud)

为每个数字执行此操作,然后计算唯一数字.

这是在python代码中(但只要你可以执行按位操作,语言并不重要,因此为什么这个问题也被标记为c/c ++):

MASK = 0x3FFFFFFF

def count_anded_bitmasks( A, B, C ):
    andSets = set(
      enumerate_all_subsets(A) +
      enumerate_all_subsets(B) +
      enumerate_all_subsets(C)
    ) …
Run Code Online (Sandbox Code Playgroud)

c c++ python binary

6
推荐指数
2
解决办法
826
查看次数

Gunicorn Django 线程

我无法找到有关 Gunicorn/Django 进程/线程生命周期的文档。

假设在 process_response() 中间件挂钩期间产生了一个守护线程。AFAIK 这个线程不会阻止 HTTP 响应。但是,它是否阻塞了产生它的线程?在工作进程准备好处理另一个请求之前,Gunicorn 是否等待该线程完成以将其加入主线程,或者该线程是否会被分离?

data_collection/tasks.py:

from celery import shared_task

@shared_task(ignore_result=True)
def add_event(event_name, event_body):
    ...
    client.add_event(event_name, event_body)
Run Code Online (Sandbox Code Playgroud)

data_collection/middleware.py:

import threading
from data_collection.tasks import add_event

class DataCollectionMiddleware:
    def process_response(self, request, response):
        ...
        thread = threading.Thread(target=add_event.delay, args=("Page_Views", event_body))
        thread.setDaemon(True)
        thread.start()
Run Code Online (Sandbox Code Playgroud)

更多详情:

我编写了一个自定义中间件类来将一些数据发送到外部队列 (RabbitMQ),稍后由芹菜工作者异步检索和处理。我不希望这个在线排队调用阻塞客户端的响应,所以我将该函数 (add_event.delay()) 包装在一个“守护进程”线程中(a la http://www.artfulcode.net/文章/threading-django/)。如果网络中断并且重试策略有很长的限制,则此线程可能会运行很长时间。在那种情况下,这些线程会阻塞我的 Gunicorn 工作进程吗?

我读过这个问题,但我不确定我的线程是否干扰了“工人的主循环”: 在 Django/Gunicorn 应用程序中有持久(非守护进程)线程的危险?

python django multithreading gunicorn

3
推荐指数
1
解决办法
3290
查看次数

标签 统计

python ×2

binary ×1

c ×1

c++ ×1

django ×1

gunicorn ×1

multithreading ×1

solr ×1